AWS Site-to-Site VPNのトンネルが頻繁にダウンして困っていた話
こんにちは、ネクストモード株式会社のたぐちです。
Site-to-Site VPNを用いたオンプレミスとAWSの接続環境で、「VPN接続が長時間落ちてしまう(しかも頻繁に)」という事象がありました。上記の事象がSite-to-Site VPNのDPDタイムアウトセッションの設定を見直すことで改善が見られたので、事例として紹介したいと思います。
起きていたこと
このとき起きていたこととしては、Site-to-Site VPNのトンネルが日中帯に両系統ともダウンしてしまっていました。
その他確認できた情報としては以下の通りです。
- CloudWatchで
TunnelState
を確認すると、数時間で自動的に接続が回復し、翌日の日中帯には再度ダウンするという動きを繰り返す - オンプレのルータ側のログから、「IKEメッセージを送信し続けるが対向機側からの応答はなく、タイムアウトすることで接続が切れている」ことを確認
また、AWSサポートへの問い合わせで、AWS基盤には異常がないこと、AWS基盤のログから以下の二点の記録が残っていたことを確認できました。
- 2 つの VPN トンネルともに、カスタマーゲートウェイ (以後 CGW) から DPD の応答がなかったため、DPD タイムアウトによりダウンさせたことを示すメッセージ
- CGW から IKE ネゴシエーションが開始されずVPN トンネルがダウンしたままの状態
早々に結論
今回の事象ですが、オンプレ側のルーターとAWSのIKEセッションの保持ルールが異なる点から起きているようでした。
どういうことかというと、ルーターの設定ではVPNダウンを検知しても、IKEセッションがセッション開始から8時間保持するというルールでした。
しかし、AWS側はVPNがダウンしてから、(デフォルト値では)30秒ダウン状態が継続した場合、DPDタイムアウトが発生しIKEセッションを終了するという設定のため、ルーターとAWSの保持ルールに差異があり、AWSとのVPN接続が復旧せず、ルーターのIKEセッション終了をもって復旧するという状況のようでした。
ルーターの設定では、VPNダウン検知時にIKEセッションを終了するという設定はできなかったため、AWS側でDPDタイムアウトアクションを「なし」にしたところ改善されました。
トンネルオプションの変更方法
トンネルオプションを変更する際は、コンソール上から該当のVPNを選択し、
「VPNトンネルオプションを変更する」からトンネルを選ぶことで、各オプションを変更することができます。
「DPDタイムアウトアクション」は下記画像のような選択肢になっており、ここで「クリア」から「なし」へ変更します。
トンネルは冗長構成をとるために二本存在しているので、もう一本のトンネルも同様に変更してあげます。
※なおトンネルオプションの変更作業をする際は、数分間ダウンタイムが発生するため、影響のない時間帯を選び作業する必要があります
※DPDタイムアウトアクションを「クリア」から「なし」に変更すると、DPDタイムアウトの状態になってもステータスがダウンとなりません。例えば、一方のトンネルがDPDタイムアウトの状態になってもダウンとならず、他方のトンネルへの切り替わりも行われなくなるのでご留意ください
(余談)DPDタイムアウトアクションとは?
まずDPD(Dead Peer Detection)とは、Keepalivesのためのパケットを定期的に送信して、通信先が予期せぬ通信断がおきたときに検出できるようにする仕組みです。
Site-to-Site VPNのトンネルオプションで設定できるDPDタイムアウトアクションとは、そのDPDタイムアウトが発生したあとに、何を実行するか指定することが出来るオプションです。
DPDタイムアウトアクションには以下の3つのアクションがあります。
- クリア(デフォルト)
- DPD タイムアウトが発生したときに IKE セッションを終了する (トンネルを停止してルートをクリアする)
- なし
- DPD タイムアウトが発生しても何もアクションを実行しない
- 再起動
- DPD タイムアウトが発生したときに IKE セッションを再起動する
最後に
Site-to-Site VPNのトンネルがダウンしてしまったときの対処法として、DPDタイムアウトアクションを変更したというお話でした。
今回のケースではDPDタイムアウトアクションのオプション設定が問題となったケースだったため、トンネルオプション変更で改善されましたが、リスクなどもあるため、実行するかは利用者の判断と自己責任で行っていただくことになるかと思います。
AWSの公式ドキュメントでは、ルーターの種類によってAWS側でどのようなトラブルシュートができるかの情報がのっているので、問題解決の助けになると思います。
また、昨年にあったアップデートでSite-to-Site VPNのトンネルアクティビティログもとれるようになってます。まだこちらの機能を利用されていない方は利用を検討してみるのもいいかもしれません。
参考
- Site-to-Site VPN 接続のトンネルオプション - AWS Site-to-Site VPN
- Site-to-Site VPN トンネルオプションの変更 - AWS Site-to-Site VPN
- 【図解】初心者に分かりやすいIPsecの仕組みとシーケンス~パケットフォーマット,DPD(keepalive)について~ | SEの道標
ネクストモードについて
ネクストモード株式会社は東日本電信電話株式会社とクラスメソッド株式会社で設立したクラウドカンパニーです。 「クラウドであたらしい働き方を」というメッセージを掲げ、さまざまなクラウド技術や製品を組み合わせて企業の働き方の当たり前を変えていくことを目指しています。 クラウドやSaaSのご利用に関してお困りごとがあれば、ネクストモードまでぜひお問い合わせください。